home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2008 February / PCWFEB08.iso / Software / Freeware / Miro 1.0 / Miro_Installer.exe / xulrunner / python / psyco / logger.py < prev    next >
Encoding:
Python Source  |  2007-04-13  |  2.7 KB  |  97 lines

  1. ###########################################################################
  2. #  Psyco logger.
  3. #   Copyright (C) 2001-2002  Armin Rigo et.al.
  4.  
  5. """Psyco logger.
  6.  
  7. See log() in core.py.
  8. """
  9. ###########################################################################
  10.  
  11.  
  12. import _psyco
  13. from time import time, localtime, strftime
  14.  
  15.  
  16. current = None
  17. print_charges = 10
  18. dump_delay = 0.2
  19. dump_last = 0.0
  20.  
  21. def write(s, level):
  22.     t = time()
  23.     f = t-int(t)
  24.     try:
  25.         current.write("%s.%02d  %-*s%s\n" % (
  26.             strftime("%X", localtime(int(t))),
  27.             int(f*100.0), 63-level, s,
  28.             "%"*level))
  29.         current.flush()
  30.     except (OSError, IOError):
  31.         pass
  32.  
  33. def psycowrite(s):
  34.     t = time()
  35.     f = t-int(t)
  36.     try:
  37.         current.write("%s.%02d  %-*s%s\n" % (
  38.             strftime("%X", localtime(int(t))),
  39.             int(f*100.0), 60, s.strip(),
  40.             "% %"))
  41.         current.flush()
  42.     except (OSError, IOError):
  43.         pass
  44.  
  45. ##def writelines(lines, level=0):
  46. ##    if lines:
  47. ##        t = time()
  48. ##        f = t-int(t)
  49. ##        timedesc = strftime("%x %X", localtime(int(t)))
  50. ##        print >> current, "%s.%03d  %-*s %s" % (
  51. ##            timedesc, int(f*1000),
  52. ##            50-level, lines[0],
  53. ##            "+"*level)
  54. ##        timedesc = " " * (len(timedesc)+5)
  55. ##        for line in lines[1:]:
  56. ##            print >> current, timedesc, line
  57.  
  58. def writememory():
  59.     write("memory usage: %d+ kb" % _psyco.memory(), 1)
  60.  
  61. def dumpcharges():
  62.     global dump_last
  63.     if print_charges:
  64.         t = time()
  65.         if not (dump_last <= t < dump_last+dump_delay):
  66.             if t <= dump_last+1.5*dump_delay:
  67.                 dump_last += dump_delay
  68.             else:
  69.                 dump_last = t
  70.             #write("%s: charges:" % who, 0)
  71.             lst = _psyco.stattop(print_charges)
  72.             if lst:
  73.                 f = t-int(t)
  74.                 lines = ["%s.%02d   ______\n" % (
  75.                     strftime("%X", localtime(int(t))),
  76.                     int(f*100.0))]
  77.                 i = 1
  78.                 for co, charge in lst:
  79.                     detail = co.co_filename
  80.                     if len(detail) > 19:
  81.                         detail = '...' + detail[-17:]
  82.                     lines.append("        #%-3d |%4.1f %%|  %-26s%20s:%d\n" %
  83.                                  (i, charge*100.0, co.co_name, detail,
  84.                                   co.co_firstlineno))
  85.                     i += 1
  86.                 current.writelines(lines)
  87.                 current.flush()
  88.  
  89. def writefinalstats():
  90.     dumpcharges()
  91.     writememory()
  92.     writedate("program exit")
  93.  
  94. def writedate(msg):
  95.     write('%s, %s' % (msg, strftime("%x")), 20)
  96.